# shellcheck shell=sh
# shellcheck disable=SC2034
# shellcheck disable=SC2059

# ferreus_orbit Plugins for Dell "Poweredge R720xd|Poweredge R730xd"

fo_get_sorted_name(){
  id=$(fo_get_id)
  if [ "$USE_FO_NAME" -eq 1 ] || [ "$1" = "-f" ]; then
    echo "Disk${id}"
  else
    echo "sd$(fo_get_dev_letter "${id}")"
  fi
}

fo_get_did(){
  id=$(fo_get_id)
  if [ "$id" -ge 12 ];then
    jq -r ".[\"TOPOLOGY\"]|select(.!=null)[]|select(.DG==0)|select(.Type==\"DRIVE\").DID" "${FO_CACHE_FILE_STORCLI}"
  else
    echo "$id"
  fi
}

fo_get_id(){
  fo_type=$(echo "$ID_PATH" | cut -d- -f3)
  case "$fo_type" in
    "sas")
      echo "$ID_PATH" | cut -d- -f5| awk -F'phy' '{print $2}'
    ;;
    "scsi")
      fo_scsi=$(echo "$ID_PATH" | cut -d- -f4)
      # shellcheck disable=SC2012
      ls "/sys/class/scsi_disk/${fo_scsi}/device/scsi_generic" | awk -F'sg' '{print $2}'
      ;;
    *)
      echo "disk type not found !" >&2
    ;;
  esac
 }

fo_get_kname(){
  fo_id=$(echo "$2" | cut -d/ -f4| awk -F's' '{print $2}')
  if [ "$fo_raid_card" = "PERC H740P Mini " ]; then
    fo_dg=$(jq -r ".\"Drive $2\"|select(.!=null)[].DG" "${FO_CACHE_FILE_STORCLI}")
    if [ "$fo_dg" = "0" ]; then
      ls "/sys/class/scsi_generic/sg12/device/block/"
    else
      ls "/sys/class/scsi_generic/sg${fo_id}/device/block/"
    fi
  else
    # shellcheck disable=SC2086
    basename "$(realpath /dev/disk/by-path/pci-*-*-phy${fo_id}-lun-0)"
  fi
}

#
FO_DISPOSITION="""
HDD disposition (Front Panel)
__{UNDERSCORE}___{UNDERSCORE}___{UNDERSCORE}___{UNDERSCORE}__
|{Disk0}|{Disk3}|{Disk6}|{Disk9}|
|{SN_Disk0}|{SN_Disk3}|{SN_Disk6}|{SN_Disk9}|
|-{MINUS}-|-{MINUS}-|-{MINUS}-|-{MINUS}-|
|{Disk1}|{Disk4}|{Disk7}|{Disk10}|
|{SN_Disk1}|{SN_Disk4}|{SN_Disk7}|{SN_Disk10}|
|-{MINUS}-|-{MINUS}-|-{MINUS}-|-{MINUS}-|
|{Disk2}|{Disk5}|{Disk8}|{Disk11}|
|{SN_Disk2}|{SN_Disk5}|{SN_Disk8}|{SN_Disk11}|
¯¯{HIGHER}¯¯¯{HIGHER}¯¯¯{HIGHER}¯¯¯{HIGHER}¯¯

HDD disposition (Rear Panel):
__{UNDERSCORE}___{UNDERSCORE}__
|{Disk12}|{Disk13}|
|{SN_Disk12}|{SN_Disk13}|
¯¯{HIGHER}¯¯¯{HIGHER}¯¯
"""

FO_TEXTILE="""

h3. HDD disposition (Front Panel)

|{Disk0}|{Disk3}|{Disk6}|{Disk9}|
|{Disk1}|{Disk4}|{Disk7}|{Disk10}|
|{Disk2}|{Disk5}|{Disk8}|{Disk11}|

h3. HDD disposition (Rear Panel):

|{Disk12}|{Disk13}|
"""

fo_load_storcli

fo_raid_card=$(jq -r '."Product Name"|select(.!=null)' "${FO_CACHE_FILE_STORCLI}")
if [ "$fo_raid_card" = "PERC H740P Mini " ]; then
      FO_DISPOSITION=$(printf "${FO_DISPOSITION}"|sed "s%SN_Disk13%SN2_Disk12%g")
      FO_DISPOSITION=$(printf "${FO_DISPOSITION}"|sed "s%Disk13%Disk12%g")
      FO_TEXTILE=$(printf "${FO_TEXTILE}"|sed "s%Disk13%Disk12_2%g")
fi
